// ***********************************************************
// 这个文件可以被看作是一个入口点，用于设置所有Cypress测试
// 它会在每个测试文件之前自动加载
// ***********************************************************

// 导入命令.js，使用自定义命令
import './commands';

// 忽略未捕获的异常，通常是由于第三方库或异步操作导致的
Cypress.on('uncaught:exception', (err, runnable) => {
  // 返回false阻止Cypress失败测试
  return false;
});

// 在测试运行前设置数据
before(() => {
  // 这里可以添加测试前的数据准备工作
  // 例如，通过API创建测试用户、测试数据等
  
  // 清理测试数据
  cy.request({
    method: 'POST',
    url: `${Cypress.env('apiUrl')}/testing/cleanup`,
    failOnStatusCode: false
  });
  
  // 创建测试用户
  cy.request({
    method: 'POST',
    url: `${Cypress.env('apiUrl')}/testing/setup`,
    body: {
      username: 'testuser',
      email: 'test@example.com',
      password: 'Password123!'
    },
    failOnStatusCode: false
  });
});

// 在所有测试完成后清理数据
after(() => {
  // 清理测试数据
  cy.request({
    method: 'POST',
    url: `${Cypress.env('apiUrl')}/testing/cleanup`,
    failOnStatusCode: false
  });
}); 